<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 首先判断是不是对象或数组
        function isObject(obj) {
            return typeof obj === 'object' && obj != null;
        }
        // 全相等
        function isEqual(obj1, obj2) {
            if (!isObject(obj1) || !isObject(obj2)) {
                // 值类型（注意，参与 equal 的一般不会是函数）
                return obj1 === obj2;
            }
            // 如果传的相等
            if (obj1 === obj2) {
                return true;
            }
            // 两个都是对象或数组，而且不相等
            // 1.先取出obj1 和 obj2 的keys，比较个数
            const obj1Keys = Object.keys(obj1);
            const obj2Keys = Object.keys(obj2);
            if (obj1Keys.length !== obj2Keys.length) {
                return false;
            }
            // 2.keys个数相等时；以obj1为基准，和obj2 依次递归比较
            for (let key in obj1) {
                // 比较当前 key 的 val——递归
                const res = isEqual(obj1[key], obj2[key]);
                // 如果碰到不相等就return false
                if (!res) {
                    return false;
                }
            }
            // 全相等
            return true;
        }
        const obj1 = {
            a: 100,
            b: {
                x: 100,
                y: 200
            }
        }
        const obj2 = {
            a: 100,
            b: {
                x: 100,
                y: 200
            }
        }
        console.log(obj1 === obj2); //false
        // 需要定义一个函数isEqual 只要两个对象中的所有的属性完全相同，就可以认为两个对象相同。
        console.log(isEqual(obj1, obj2));
    </script>
</body>

</html>